package com.hc.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hc.common.bean.PageBean;
import com.hc.domain.Sku;
import com.hc.res.CategoryWithSku;
import com.hc.res.Entry;
import com.hc.res.SkuDetail;
import com.hc.res.SkuItem;

import java.util.List;

/**
 * @author hecai
 * @date 2021/12/7 15:10
 */
public interface SkuService extends IService<Sku> {

    /**
     * 查询指定类型的sku
     *
     * @param amount
     * @param type   1轮播图 2横幅 3小广告 4常规
     * @param key
     * @param flag   值true表示会将数据库中查询到的数据缓存起来，且以后每次都从缓存中取数据；值false，表示不缓存数据且直接从数据库中取数据
     * @return
     */
    List<Entry<Integer, String>> selectAds(Integer amount, Integer type, String key, Boolean flag);

    /**
     * 查询推荐or促销sku
     *
     * @param amount
     * @param type
     * @param key
     * @param flag
     * @return
     */
    List<SkuItem> selectRecommendOrPromotionSku(Integer amount, Integer type, String key, Boolean flag);

    List<CategoryWithSku> selectCategoryWidthSku(Integer fatherCategoryAmout, Integer sonCategoryAmount, Integer specsAmount, String key, Boolean flag);

    /**
     * 根据sku的编号查找sku的详情
     *
     * @param skuId
     * @return
     */
    SkuDetail getSkuDetailBySkuId(Integer skuId);

    /**
     * 根据spu的编号查找其下辖的sku的信息
     *
     * @param spuId
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageBean<SkuItem> getSkuBySpuId(Integer spuId, Integer pageNum, Integer pageSize);

    /**
     * 查找指定父类别下的所有的sku
     *
     * @param pid
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageBean<SkuItem> getSkusByCategoryPid(Integer pid, Integer pageNum, Integer pageSize);

    /**
     * 查找指定类别下的所有的sku
     *
     * @param cid
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageBean<SkuItem> getSkusByCategoryId(Integer cid, Integer pageNum, Integer pageSize);
}
